package dao

import (
	"time"
)

// 这是 Comment 的全局公开dao对象，被service层调用!
var CommentDao = commentDao{}

// 评论表(帖子回复、博客文章评论等，统一处理)
// 这是 comment表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Comment struct {
	Cid     int32     `json:"cid" form:"cid" db:"cid" v:"cid"`
	ObjId   int32     `json:"obj_id" form:"obj_id" db:"obj_id" v:"obj_id"`         // 对象id,属主(评论给谁)
	ObjType int8      `json:"obj_type" form:"obj_type" db:"obj_type" v:"obj_type"` // 评论类型:0-帖子;1-博文;2-资源;3-wiki;4-project
	Content string    `json:"content" form:"content" db:"content" v:"content"`
	Uid     int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                     // 评论回复者
	Floor   int32     `json:"floor" form:"floor" db:"floor" v:"floor"`             // 第几楼
	LikeNum int32     `json:"like_num" form:"like_num" db:"like_num" v:"like_num"` // 喜欢数
	Flag    int8      `json:"flag" form:"flag" db:"flag" v:"flag"`                 // 评论审核标识,0-未审核;1-已审核;2-审核删除;3-用户自己删除
	Ctime   time.Time `json:"ctime" form:"ctime" db:"ctime" v:"ctime"`
}

// 注意:这是 Comment 的私有dao对象，只能在dao层内使用!
type commentDao struct {
	InsertTemplate func(arg Comment) (int64, error)         //插入一条记录
	UpdateTemplate func(arg Comment) (int64, error)         //更新一条记录
	DeleteTemplate func(id int64) (int64, error)            `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Comment, error)          `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg CommentList) ([]Comment, error) //模糊分页查询
}

/*
// 这是 comment 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type CommentPostman struct {
cid
obj_id
obj_type
content
uid
floor
like_num
flag
ctime

}*/

// 这是 comment 表的批量请求参数
type CommentReq struct {
	List []Comment `json:"list" form:"list"`
}

// 这是 commentDao.List()方法的请求参数
type CommentList struct {
	Page
}
